﻿#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
#include <math.h>


/*你在一家生产小球的玩具厂工作，有 n 个小球，编号从 lowLimit 开始，到 highLimit 结束
（包括 lowLimit 和 highLimit ，即 n == highLimit - lowLimit + 1）。另有无限数量的盒子，编号从 1 到 infinity 。

你的工作是将每个小球放入盒子中，其中盒子的编号应当等于小球编号上每位数字的和。
例如，编号 321 的小球应当放入编号 3 + 2 + 1 = 6 的盒子，而编号 10 的小球应当放入编号 1 + 0 = 1 的盒子。

给你两个整数 lowLimit 和 highLimit ，返回放有最多小球的盒子中的小球数量。
如果有多个盒子都满足放有最多小球，只需返回其中任一盒子的小球数量。
*/
//int main()
//{
//	int highLimit = 0;
//	int lowLimit = 0;
//	int arr[46] = { 0 };
//	scanf("%d%d", &lowLimit, &highLimit);
//	for (int i = lowLimit; i <= highLimit; ++i)//几个球就循环几遍
//	{
//		int sum = 0;
//		for (int j = i; j > 0; j /= 10)     //计算当前球编号每一位的和
//		{
//			sum += j % 10;
//		}
//		arr[sum]++;                //算出球编号的和，把对应的下标+1
//	}
//	int max = 1;                    //最少一个盒子里有一个球
//	for (int i = 1; i < 46; ++i)   //遍历数组
//	{
//		if (max < arr[i])        //只要盒子里的球有比max多的
//			max = arr[i];        //就更新max           
//	}
//	printf("%d\n", max);
//	return 0;
//}					

//int main()
//{
//	char a[50] = "abcdefg";
//	char b[] = "123456";
//	
//	int len = strlen(a);
//
//	int i = 0;
//	while (a[len++] = b[i++]);
//
//	a[len] = 0;
//	puts(a);
//	return 0;
//}

//int main()
//{
//	int arr[10] = { 0 };
//	int* p = arr;//&arr[0]
//	for (int i = 0; i <= 10; ++i)
//	{
//		*p = i;
//		//把i的值依次赋给数组当前的元素
//		p++;
//		//每次p++访问下一个元素
//
//		//当i=10的时候，其实数组每个元素已经赋值了
//		//当时还是要执行并且解引用
//		//这时指向的位置就是未知，也就造成了野指针
//	}
//	return 0;
//}



//int* test()
//{
//	int a = 10;
//	return &a;
//}
//int main()
//{
//	int* p = test();
//
//	printf("%d", *p);
//	return 0;
//}

//
//int main()
//{
//	int* p = NULL;
//
//	return 0;
//}

//#define VALUES 5
//int main()
//{
//	int arr[VALUES];
//	int* vp;
//
//	for (vp = &arr[0]; vp < &arr[VALUES];)
//	{
//		*vp++ = 0;
//	}
//	return 0;
//}


//int main()
//{
//	int arr[10] = { 0 };
//
//	int* p = arr;
//	for (int i = 0; i < 10; ++i)
//	{
//		*(p+i) = 1;
//		//*p++ = 1;
//	}
//
//	return 0;
//}


//int main()
//{
//	int arr[10] = { 0 };
//	printf("%d\n", arr[9] - arr[0]);//9
//	return 0;
//}


//int slen(char* s)
//{
//	char* ret = s;
//	while (*s != '\0')
//	{
//		s++;
//	}
//	return s - ret;
//}
//int main()
//{
//	char s[] = "abcde";
//	printf("%d\n", slen(s));
//	return 0;
//}



//int main()
//{
//	int a = 10;
//	int* pa = &a;
//	int** ppa = &pa;	
//	//ppa是二级指针
//	printf("%d\n", **ppa = 20);
//	return 0;
//}



//int main()
//{
//	int arr[3] = { 1,2,3 };
//	int ar[] = { 2,3,4 };
//	int a[] = { 3,4,5 };
//	int* parr[] = { arr, ar, a };
//	for (int i = 0; i < 3; i++)
//	{
//		for (int j = 0; j < 3; ++j)
//			printf("%d ", *(*(parr+i)+j));
//		printf("\n");
//	}								   
//	return 0;
//}
//int main()
//{
//	int arr[3][3] = { 1,2,3,2,3,4,3,4,5 };
//	int* p = arr;
//	for (int i = 0; i < 3; i++)
//	{
//		for (int j = 0; j < 3; j++)
//			printf("%d ", *(*(p + i) + j));
//		printf("\n");
//	}
//	return 0;
//}

int main()
{
	int nums[] = { 3,9,7,8,3,8,6,6 };
	int numsSize = sizeof(nums) / sizeof(nums[0]);
    for (int i = 0; i < numsSize; ++i)
    {
        int x = nums[i];
        int sum = 0;
        for (int j = 0; j < numsSize; ++j)
        {
            if (nums[j] >= x && nums[j] != 0)
                sum++;
            if (sum > x)
            {
                break;
            }
        }
        if (x == sum || sum == numsSize)
        {
            if (sum == 0)
            {
                printf("1...%d\n", sum);
                return -1;
            }
            printf("2...%d\n", sum);
            return sum;
        }
    }
    return -1;
}